package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.UserBean;

/**
 * 用户接口类
 */
public interface IUserService {
    /**
     * 通过用户名密码登录查询。如果登录成功，则记录登录日志。同时需要查询该用户用户的权限集合。
     * @param userName 用户名
     * @return 登录用户对象
     */
    public UserBean login(String userName);

    /**
     * 通过登录用户id修改新密码
     * @param loginUserId 登录用户编号
     * @param newPwd 新密码
     */

    public void updatePwd(Integer loginUserId,String newPwd);

    /**
     * 根据用户名动态分页查询用户表
     * @param pageNO 页码
     * @param userName 用户名
     * @return 分页对象
     */
    public IPage<UserBean> cutByItem(Integer pageNO,String userName);

    /**
     * 通过用户名查询用户
     * @param userName 用户名
     * @return 用户对象
     */
    public UserBean findByUserName(String userName);

    /**
     * 添加用户信息，同时添加该用户拥有的角色信息（中间表）
     * @param user 用户对象
     * @param roleId 角色ID数组
     */
    public void add(UserBean user,Integer[] roleId);

    /**
     * 删除用户，同时删除用户拥有的角色信息
     * 先删除中间表该用户的角色，再删除用户
     * @param userId 删除用户ID
     */
    public void del(Integer userId);

    /**
     * 通过id查询用户信息，同时查询该用户拥有的角色集合，和权限集合
     * @param userId 用户ID
     * @return 用户对象
     */
    public UserBean findById(Integer userId);

    /**
     * 通过用户id修改用户的角色
     * 先通过用户id删除中间表相关信息，再添加新的角色信息
     * @param userId 用户ID
     * @param newRoleId 新角色数组
     */
    public void updateRole(Integer userId,Integer[] newRoleId);
}
